package fisica;

import java.awt.Graphics2D;

import objetos.CanvasGame;
import objetos.Sprite;

public class ObjetoFisico extends Sprite {
	public float coefElastico;
	public float coefAtrito;
	public float momentoLinear;
	public float massaTemporaria;
	public float velocidadeXPadrao;
	
	
	public float forcaAtrito;
	public float impulso;
	
	public float velocidadeY= 0;
	
	public float raioDeColisao;
	public float massa;
	public float peso;
	public double velocidade;
	public float velocidadeInicial;
	public float tempoNoAr;
	public float aceleracao;
	public int largura;
	public int altura;
	public String nome;
	public boolean estaColidindoChao =  false ;
	public ObjetoFisico empurrador;
	public boolean estaColidindo = false;
	public double forcaEmpurro = 0;
	public float valorQuedaLivre = 0;
	
	@Override
	public void SimulaSe(long diftime) {
		// TODO Auto-generated method stub

	}

	@Override
	public void DesenhaSe(Graphics2D dbg, int mapx, int mapy) {
		// TODO Auto-generated method stub

	}
	
	public boolean estaColidindoParede(long diftime){
		int bx = (int) ((X + 16) / 16);
		int by = (int) ((Y + 28) / 16);
//		System.out.println("Caixa::estaColidindo : bx "+bx);
//		System.out.println("Caixa::estaColidindo : by "+by);
		if (CanvasGame.instance.mapaGenerico.mapa2[by][bx] > 0) {
			if (CanvasGame.instance.mapaGenerico.mapa2[by-1][bx+1] > 0) {
				
			}

			if (CanvasGame.instance.mapaGenerico.mapa2[by-1][bx-1] > 0) {
			}
			return true;
		}
		return false;
	}
	
	public boolean estaColidindoChao(){
		return false;
	}
	
	public boolean estaColidindoChao(long diftime){
		return false;
	}
	
	public void movimentaObjeto(float dx){
		
	}
	
	public boolean estaColidindoObjeto(ObjetoFisico obj){
		
		float dx = (obj.X + obj.largura/2) - (this.X+this.largura/2);
		float dy = (obj.Y + obj.altura/2) - (this.Y + this.altura/2);
		float r2 = (float) (obj.raioDeColisao + this.raioDeColisao);

		r2 = r2 * r2;
		if (r2 > ((dx * dx) + (dy * dy))) {
			return true;
		}
		return false;
	}
	

}
